.\"   $Id: genpat.1,v 1.2 2002/10/04 14:06:08 francois Exp $
.\" @(#)genpat 2.0 Sep 07 1993 UPMC; Author: PITON D.
.TH GENPAT 1 "October 1, 1997" "ASIM/LIP6" "ALLIANCE USER COMMANDS"

.SH NAME
.PP
\fBgenpat\fP, A procedural pattern file generator

.SH SYNOPSIS
.PP
\fBgenpat [-v] [-k] [file]\fP
.br

.so man1/alc_origin.1

.SH DESCRIPTION
.PP
\fBGenpat\fP is a set of C fonctions that allows a procedural description of
input pattern file for the logic simulator \fBASIMUT\fP. The Unix \fBgenpat\fP
command accepts a C file as input and produces a pattern description file as
output. The extension ".c" is not to be given. The file generated by
\fBgenpat\fP is in pat format, so IT IS STRONGLY RECOMMENDED TO SEE pat(5)
BEFORE THIS MANUAL.

.SH OPTIONS
.PP
.TP 15
\fI\-v\fP
verbose mode
.TP 15
\fI\-k\fP
keeps the executable along with the compilation Makefile after completion

.SH GENPAT FILE FORMAT
.PP
From a user point of view, \fBgenpat\fP is a pattern description language
using all standard C facilities (include, define, variables, loop, ...).
Fonctions provided by \fBgenpat\fP are to be used in a given order. Using
them in a different order won't crash the system, but will result in
execution errors. Here follows the description of the input file.

.PP
A \fBpat\fP format file can be divided in two parts : declaration and
description part.

.PP
The declaration part is the list of inputs, outputs, internal signals and
registers. Inputs are to be forced to a certain value and all the others are
to be observed during simulation.

.PP
The description part is a set of patterns, where each pattern defines the
value of inputs and outputs. The pattern number represents actually the
absolute time for the simulator.

.PP
Similarly, a \fBgenpat\fP file can be divided in two parts : declaration and
description part. Functions related to the declaration must be called before
any function related to the description part.

.PP
.TP 10
\fIdeclaration part\fP
The first thing you should do in this part is to give the output file's name
(see DEF_GENPAT(3)). Then, this part allows you to declare the inputs, the
outputs, and internal observing points (see DECLAR(3)). It is also possible
to create virtual arraies (see ARRAY(3)).
.TP 10
\fIdescription part\fP
After all signals are declared, you can begin to define input values which
are to be applied to the inputs of the circuit or output values which are
to be compare with the values produced during the simulation. (see AFFECT(3)).
Genpat describes the stimulus by event : only signal transitions are described.
This part also allows you to give instructions to the simulation tool to save
the state of the circuit at the end of the simulation. (see SAVE(3)). Last
thing you should do in this part is to generate the output file (see
SAV_GENPAT(3)).  

.SH FUNCTIONS
.PP
.TP 15
\fIDEF_GENPAT()\fP 
defines the output file's name.
.TP 15   
\fISAV_GENPAT()\fP
make the output file be generated
.TP 15
\fIDECLAR()\fP
declares inputs, outputs, and the internal observing points.
.TP 15
\fIARRAY()\fP
allows signals of the same type to be groupped in an "virtual array" in
order to ease their manipulation 
.TP 15
\fIINIT()\fP
changes the values of registers between two patterns.
.TP 15
\fIAFFECT()\fP
assigns a value to a signal, at a given pattern number. This value is kept on
the signal until a new value is assigned to the signal.
.TP 15
\fISAVE()\fP
informs the simulation tool to save the state of the circuit at the end of
simulation
.TP 15
\fILABEL()\fP
gives a label to the current pattern
.TP 15
\fIGETCPAT()\fP
return the number of the current pattern

.SH EXAMPLES
.PP
 
.nf
#include <stdio.h>
#include "genpat.h"

char *inttostr(entier)
int entier;
  {
  char *str;
  str = (char *) mbkalloc (32 * sizeof (char));
  sprintf (str, "%d",entier);
  return(str);
  }
   /*------------------------------*/
   /* end of the description       */
   /*------------------------------*/
 
 main () 
 {
 int i;
 int j;
 int cur_vect = 0;
 
 DEF_GENPAT("example");
 
 /* interface */
 DECLAR ("a", ":2", "X", IN, "3  downto 0", "" );
 DECLAR ("b", ":2", "X", IN, "3  downto 0", "" );
 DECLAR ("s", ":2", "X", OUT, "3 downto 0", "" );
 DECLAR ("vdd", ":2", "B", IN, "", "" );
 DECLAR ("vss", ":2", "B", IN, "", "" );
 
 LABEL ("adder");
 AFFECT ("0", "vdd", "0b1");
 AFFECT ("0", "vss", "0b0");
 
 for (i=0; i<16; i++)
 {
     for (j=0; j<16; j++) 
     {
         AFFECT (inttostr(cur_vect), "a", inttostr(i) );
         AFFECT (inttostr(cur_vect), "b", inttostr(j) );
         cur_vect++;
     }
 }
 
 
 SAV_GENPAT ();
 }
.fi
 
.SH ENVIRONMENT VARIABLES
.PP
\fBGenpat\fP reads the environment variable VH_PATSFX to give the result
file an extension.

.SH SEE ALSO
.PP
AFFECT(3), ARRAY(3), DECLAR(3), DEF_GENPAT(3), GETCPAT(3), INIT(3), LABEL(3),
SAVE(3), SAV_GENPAT(3), pat(5), asimut(1)


.so man1/alc_bug_report.1

